gusucode.com > VC++ 仿QQ2006界面 > VC++ 仿QQ2006界面/gusucode/NUKDlg.cpp
//Download by http://www.NewXing.com // NUKDlg.cpp : 实现文件 // #include "stdafx.h" #include "NUK.h" #include "NUKDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CNUKDlg 对话框 CNUKDlg::CNUKDlg(CWnd* pParent /*=NULL*/) : CDialog(CNUKDlg::IDD, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); PointSpace = 3; BorderSpace = 4; m_bMouseDown = false; m_strStatus = _T("89642685(在线)"); m_font.CreateFont( 15, // nHeight 0, // nWidth 0, // nEscapement 0, // nOrientation FW_BOLD, // nWeight FALSE, // bItalic FALSE, // bUnderline 0, // cStrikeOut ANSI_CHARSET, // nCharSet OUT_DEFAULT_PRECIS, // nOutPrecision CLIP_DEFAULT_PRECIS, // nClipPrecision DEFAULT_QUALITY, // nQuality DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily _T("Arial")); // lpszFacename } void CNUKDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_SKINTAB, m_skintab); } BEGIN_MESSAGE_MAP(CNUKDlg, CDialog) ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_WM_GETMINMAXINFO() ON_WM_SIZING() ON_WM_ERASEBKGND() ON_WM_LBUTTONDOWN() ON_WM_TIMER() ON_WM_LBUTTONUP() ON_WM_SETCURSOR() ON_WM_MOUSEMOVE() ON_WM_DESTROY() ON_BN_CLICKED(IDC_BTN_CLOSE, &CNUKDlg::OnBnClickedCloseBtn) ON_BN_CLICKED(IDC_BTN_MENU, &CNUKDlg::OnBnClickedMenuBtn) ON_BN_CLICKED(IDC_BTN_USERHEAD, &CNUKDlg::OnBnClickedUserHeardBtn) ON_BN_CLICKED(IDC_BTN_SEARCH, &CNUKDlg::OnBnClickedSearchBtn) ON_BN_CLICKED(IDC_BTN_HOSTING, &CNUKDlg::OnBnClickedHostingBtn) ON_BN_CLICKED(IDC_BTN_STATUS, &CNUKDlg::OnBnClickedStatusBtn) END_MESSAGE_MAP() // CNUKDlg 消息处理程序 BOOL CNUKDlg::OnInitDialog() { CDialog::OnInitDialog(); // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 CRect rcClient; GetClientRect(&rcClient); //设置背景图片 SetTopLeftImage(IDB_BITMAP_FRAME_TOPLEFT); SetTopMidImage(IDB_BITMAP_FRAME_TOPMID); SetTopRightImage(IDB_BITMAP_FRAME_TOPRIGHT); SetCenterLeftImage(IDB_BITMAP_FRAME_CENTERLEFT); SetCenterMidImage(IDB_BITMAP_FRAME_CENTERMID); SetCenterRightImage(IDB_BITMAP_FRAME_CENTERRIGHT); SetBottomLeftImage(IDB_BITMAP_FRAME_BOTTOMLEFT); SetBottomMidImage(IDB_BITMAP_FRAME_BOTTOMMID); SetBottomRightImage(IDB_BITMAP_FRAME_BOTTOMRIGHT); m_closeBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(rcClient.Width()-21,5,rcClient.Width()-21+16,5+16),this,IDC_BTN_CLOSE); m_closeBtn.SetImage(IDB_BITMAP_CLOSEBTN_NORMAL,IDB_BITMAP_CLOSEBTN_HOVER,IDB_BITMAP_CLOSEBTN_DOWN, IDB_BITMAP_CLOSEBTN_NORMAL); ////////////////////////// CString strNormal,strHover,strDown,strDisable; CString strMouseOut,strMouseIn; ///////////////////////// m_userHeadBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(8,30,8+32,30+32),this,IDC_BTN_USERHEAD); m_userHeadBtn.SetImage(IDB_BITMAP_USERHEAD,IDB_BITMAP_USERHEAD,IDB_BITMAP_USERHEAD, IDB_BITMAP_USERHEAD); m_statusBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(41,28,41+11,28+36),this,IDC_BTN_STATUS); m_statusBtn.SetImage(IDB_BITMAP_STATUSBTN_NORMAL,IDB_BITMAP_STATUSBTN_HOVER,IDB_BITMAP_STATUSBTN_DOWN, IDB_BITMAP_STATUSBTN_NORMAL); m_mailBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(55,50,55+35,50+16),this,IDC_BTN_MAIL); strMouseOut.LoadStringW(IDS_PATH_MAILBTN_MOUSEOUT); strMouseIn.LoadStringW(IDS_PATH_MAILBTN_MOUSEIN); m_mailBtn.SetIcon(strMouseOut,strMouseIn); m_mailBtn.SetWindowTextW(_T("(0)")); m_mailBtn.SetTextPos(CPoint(17,0)); m_mailBtn.SetColor(RGB(0,28,123),RGB(255,255,255)); m_hostingBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(90,50,90+35,50+16),this,IDC_BTN_HOSTING); strMouseOut.LoadStringW(IDS_PATH_HOSTINGBTN_MOUSEOUT); strMouseIn.LoadStringW(IDS_PATH_HOSTINGBTN_MOUSEIN); m_hostingBtn.SetIcon(strMouseOut,strMouseIn); m_hostingBtn.SetWindowTextW(_T("(1)")); m_hostingBtn.SetTextPos(CPoint(17,0)); m_hostingBtn.SetColor(RGB(0,28,123),RGB(255,255,255)); m_paymentBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(125,50,125+16,50+16),this,IDC_BTN_PAYMENT); strMouseOut.LoadStringW(IDS_PATH_PAYMENTBTN_MOUSEOUT); strMouseIn.LoadStringW(IDS_PATH_PAYMENTBTN_MOUSEIN); m_paymentBtn.SetIcon(strMouseOut,strMouseIn); ////////////////////////// m_mobileBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(12,rcClient.bottom-52,12+17,rcClient.bottom-52+17),this,IDC_BTN_MOBILE); strMouseOut.LoadStringW(IDS_PATH_MOBILEBTN_MOUSEOUT); strMouseIn.LoadStringW(IDS_PATH_MOBILEBTN_MOUSEIN); m_mobileBtn.SetIcon(strMouseOut,strMouseIn); m_gameBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(12+26,rcClient.bottom-52,12+26+17,rcClient.bottom-52+17),this,IDC_BTN_GAME); strMouseOut.LoadStringW(IDS_PATH_GAMEBTN_MOUSEOUT); strMouseIn.LoadStringW(IDS_PATH_GAMEBTN_MOUSEIN); m_gameBtn.SetIcon(strMouseOut,strMouseIn); m_ttBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(12+26*2,rcClient.bottom-52,12+26*2+17,rcClient.bottom-52+17),this,IDC_BTN_TT); strMouseOut.LoadStringW(IDS_PATH_TTBTN_MOUSEOUT); strMouseIn.LoadStringW(IDS_PATH_TTBTN_MOUSEIN); m_ttBtn.SetIcon(strMouseOut,strMouseIn); m_chatBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(12+26*3,rcClient.bottom-52,12+26*3+17,rcClient.bottom-52+17),this,IDC_BTN_CHAT); strMouseOut.LoadStringW(IDS_PATH_CHATBTN_MOUSEOUT); strMouseIn.LoadStringW(IDS_PATH_CHATBTN_MOUSEIN); m_chatBtn.SetIcon(strMouseOut,strMouseIn); m_petBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(12+26*4,rcClient.bottom-52,12+26*4+17,rcClient.bottom-52+17),this,IDC_BTN_PET); strMouseOut.LoadStringW(IDS_PATH_PETBTN_MOUSEOUT); strMouseIn.LoadStringW(IDS_PATH_PETBTN_MOUSEIN); m_petBtn.SetIcon(strMouseOut,strMouseIn); m_musicBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(12+26*5,rcClient.bottom-52,12+26*5+17,rcClient.bottom-52+17),this,IDC_BTN_MUSIC); strMouseOut.LoadStringW(IDS_PATH_MUSICBTN_MOUSEOUT); strMouseIn.LoadStringW(IDS_PATH_MUSICBTN_MOUSEIN); m_musicBtn.SetIcon(strMouseOut,strMouseIn); m_tvBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(12+26*6,rcClient.bottom-52,12+26*6+17,rcClient.bottom-52+17),this,IDC_BTN_TV); strMouseOut.LoadStringW(IDS_PATH_TVBTN_MOUSEOUT); strMouseIn.LoadStringW(IDS_PATH_TVBTN_MOUSEIN); m_tvBtn.SetIcon(strMouseOut,strMouseIn); ////////////////////////// m_menuBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(0,rcClient.bottom-30,65,rcClient.bottom-30+24),this,IDC_BTN_MENU); strNormal.LoadStringW(IDS_PATH_MENUBTN_NORMAL); strHover.LoadStringW(IDS_PATH_MENUBTN_HOVER); strDown.LoadStringW(IDS_PATH_MENUBTN_DOWN); strDisable.LoadStringW(IDS_PATH_MENUBTN_DISABLE); m_menuBtn.SetImage(strNormal,strHover,strDown,strDisable); m_msgManagerBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(75,rcClient.bottom-25,80+17,rcClient.bottom-25+17),this,IDC_BTN_MSGMANAGER); strMouseOut.LoadStringW(IDS_PATH_MSGBTN_MOUSEOUT); strMouseIn.LoadStringW(IDS_PATH_MSGBTN_MOUSEIN); m_msgManagerBtn.SetIcon(strMouseOut,strMouseIn); m_searchBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(100,rcClient.bottom-25,100+45,rcClient.bottom-25+17),this,IDC_BTN_SEARCH); strMouseOut.LoadStringW(IDS_PATH_SEARCHBTN_MOUSEOUT); strMouseIn.LoadStringW(IDS_PATH_SEARCHBTN_MOUSEIN); m_searchBtn.SetIcon(strMouseOut,strMouseIn); m_searchBtn.SetWindowTextW(_T("查找")); m_searchBtn.SetColor(RGB(255,255,255),RGB(0,0,0)); m_skintab.MoveWindow(3,68,27,33*4+4); int tabcount = 4; m_skintab.SetCount(tabcount); for(int i=0;i<tabcount;i++) { m_skintab.SetRect(i,CRect(0,33*i,27,33*i+33)); m_skintab.SetSkin(i,_T("image\\barback_normal.bmp"),_T("image\\barback_over.bmp"),_T("image\\barback_disabled.bmp")); } m_skintab.SetIcon(0,_T("image\\FriendButton.ico")); m_skintab.SetIcon(1,_T("image\\NetDiskButton.ico")); m_skintab.SetIcon(2,_T("image\\EaseButton.ico")); m_skintab.SetIcon(3,_T("image\\BlankPanel.ico")); CenterWindow();//居中屏幕 return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 void CNUKDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { CPaintDC dc(this); // 用于绘制的设备上下文 // TODO: 在此处添加消息处理程序代码 CRect rcClient; GetClientRect(&rcClient); //调整控件位置//////////////////////////// CRect rcCloseBtn; m_closeBtn.GetClientRect(&rcCloseBtn); m_closeBtn.MoveWindow(rcClient.Width()-21,5,rcCloseBtn.Width(),rcCloseBtn.Height()); CRect rcMobileBtn; m_mobileBtn.GetClientRect(&rcMobileBtn); m_mobileBtn.MoveWindow(12,rcClient.bottom-52,rcMobileBtn.Width(),rcMobileBtn.Height()); CRect rcGameBtn; m_gameBtn.GetClientRect(&rcGameBtn); m_gameBtn.MoveWindow(12+26,rcClient.bottom-52,rcGameBtn.Width(),rcGameBtn.Height()); CRect rcTTBtn; m_ttBtn.GetClientRect(&rcTTBtn); m_ttBtn.MoveWindow(12+26*2,rcClient.bottom-52,rcTTBtn.Width(),rcTTBtn.Height()); CRect rcChatBtn; m_chatBtn.GetClientRect(&rcChatBtn); m_chatBtn.MoveWindow(12+26*3,rcClient.bottom-52,rcChatBtn.Width(),rcChatBtn.Height()); CRect rcPetBtn; m_petBtn.GetClientRect(&rcPetBtn); m_petBtn.MoveWindow(12+26*4,rcClient.bottom-52,rcPetBtn.Width(),rcPetBtn.Height()); CRect rcMusicBtn; m_musicBtn.GetClientRect(&rcMusicBtn); m_musicBtn.MoveWindow(12+26*5,rcClient.bottom-52,rcMusicBtn.Width(),rcMusicBtn.Height()); CRect rcTVBtn; m_tvBtn.GetClientRect(&rcTVBtn); m_tvBtn.MoveWindow(12+26*6,rcClient.bottom-52,rcTVBtn.Width(),rcTVBtn.Height()); if(12+26*6+rcTVBtn.Width()+2>rcClient.Width()) m_tvBtn.ShowWindow(false); else m_tvBtn.ShowWindow(true); CRect rcMenuBtn; m_menuBtn.GetClientRect(&rcMenuBtn); m_menuBtn.MoveWindow(0,rcClient.bottom-30,rcMenuBtn.Width(),rcMenuBtn.Height()); CRect rcMsgBtn; m_msgManagerBtn.GetClientRect(&rcMsgBtn); m_msgManagerBtn.MoveWindow(75,rcClient.bottom-25,rcMsgBtn.Width(),rcMsgBtn.Height()); CRect rcSearchBtn; m_searchBtn.GetClientRect(&rcSearchBtn); m_searchBtn.MoveWindow(100,rcClient.bottom-25,rcSearchBtn.Width(),rcSearchBtn.Height()); //内存画图////////////////////////// CDC m_MemDC; m_MemDC.CreateCompatibleDC(&dc); CBitmap btScreen; btScreen.CreateCompatibleBitmap(&dc, rcClient.Width(), rcClient.Height()); m_MemDC.SelectObject(&btScreen); btScreen.DeleteObject(); //画背景 m_MemDC.Rectangle(rcClient); DrawPosImage(&m_BitmapCenterMid, &m_MemDC, CPoint(rcClient.Width()-m_szBitmapCenterRight.cx-m_szBitmapCenterMid.cx, rcClient.Height()-m_szBitmapBottomMid.cy-m_szBitmapCenterMid.cy)); DrawPosImage(&m_BitmapTopLeft, &m_MemDC, CPoint(0, 0)); DrawRangeImage(&m_BitmapTopMid, &m_MemDC, CRect(m_szBitmapTopLeft.cx, 0, rcClient.Width()-m_szBitmapTopRight.cx, m_szBitmapTopMid.cy)); DrawPosImage(&m_BitmapTopRight, &m_MemDC, CPoint(rcClient.Width()-m_szBitmapTopRight.cx, 0)); DrawRangeImage(&m_BitmapCenterLeft, &m_MemDC, CRect(0, m_szBitmapTopLeft.cy, m_szBitmapCenterLeft.cx, rcClient.Height()-m_szBitmapBottomLeft.cy)); DrawRangeImage(&m_BitmapCenterRight, &m_MemDC, CRect(rcClient.Width()-m_szBitmapCenterRight.cx, m_szBitmapTopRight.cy, rcClient.Width(), rcClient.Height()-m_szBitmapBottomRight.cy)); DrawPosImage(&m_BitmapBottomLeft, &m_MemDC, CPoint(0, rcClient.Height()-m_szBitmapBottomLeft.cy)); DrawRangeImage(&m_BitmapBottomMid, &m_MemDC, CRect(m_szBitmapBottomLeft.cx, rcClient.Height()-m_szBitmapBottomMid.cy, rcClient.Width()-m_szBitmapBottomRight.cx, rcClient.Height())); DrawPosImage(&m_BitmapBottomRight, &m_MemDC, CPoint(rcClient.Width()-m_szBitmapBottomRight.cx, rcClient.Height()-m_szBitmapBottomRight.cy)); //画上线状态的字 m_MemDC.SelectObject(m_font); m_MemDC.SetTextColor(RGB(0,28,123)); m_MemDC.SetBkMode(TRANSPARENT); m_MemDC.DrawText(m_strStatus,CRect(55,30,55+100,30+16),DT_CENTER|DT_VCENTER|DT_SINGLELINE); //创建不规则窗体 ChangeWindowRgn(&m_MemDC); //重画控件///////////////////////// ReDrawCrl(&m_MemDC); //画到显示器上//////////////////////////// dc.BitBlt(rcClient.left, rcClient.top, rcClient.Width(), rcClient.Height(), &m_MemDC, 0, 0, SRCCOPY); m_MemDC.DeleteDC(); } } //当用户拖动最小化窗口时系统调用此函数取得光标显示。 // HCURSOR CNUKDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CNUKDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI) { // TODO: 在此添加消息处理程序代码和/或调用默认值 //lpMMI->ptMinTrackSize.x = 170; //lpMMI->ptMinTrackSize.y = 400; CDialog::OnGetMinMaxInfo(lpMMI); } //定点画位图 void CNUKDlg::DrawPosImage(CBitmap *pBitmap, CDC *pDC, CPoint pt) { CDC MemDC; MemDC.CreateCompatibleDC(pDC); CBitmap *pOldBitmap = (CBitmap*)MemDC.SelectObject(pBitmap); BITMAP bm; pBitmap->GetBitmap(&bm); int li_Width = bm.bmWidth; int li_Height = bm.bmHeight; pDC->BitBlt(pt.x, pt.y, li_Width, li_Height, &MemDC, 0, 0, SRCCOPY); MemDC.SelectObject(pOldBitmap); MemDC.DeleteDC(); } //平铺画位图 void CNUKDlg::DrawRangeImage(CBitmap *pBitmap, CDC *pDC, CRect rc) { CDC MemDC; BITMAP bm; pBitmap->GetBitmap(&bm); int li_Width = bm.bmWidth; int li_Height = bm.bmHeight; MemDC.CreateCompatibleDC(pDC); CBitmap* pOldBitmap = MemDC.SelectObject(pBitmap); int x=rc.left; int y=rc.top; while (y < (rc.Height()+rc.top)) { while(x < (rc.Width()+rc.left)) { pDC->BitBlt(x, y, li_Width, li_Height, &MemDC, 0, 0, SRCCOPY); x += li_Width; } x = rc.left; y += li_Height; } MemDC.SelectObject(pOldBitmap); MemDC.DeleteDC(); } //载入硬盘位图 void CNUKDlg::SetImage(CBitmap &bitmap, CString strName) { HBITMAP hBitmap = NULL; hBitmap = (HBITMAP)::LoadImage(NULL, strName, IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE|LR_LOADFROMFILE); //ASSERT(hBitmap); if(hBitmap == NULL) { CString str; str.LoadStringW(IDS_ERROR_NOBMP); AfxMessageBox(str); PostQuitMessage(0); } if (bitmap.m_hObject) bitmap.Detach(); bitmap.Attach(hBitmap); } //载入资源位图 void CNUKDlg::SetImage(CBitmap &bitmap, UINT nID) { if (bitmap.m_hObject) bitmap.Detach(); bitmap.LoadBitmap(nID); } //保存位图尺寸 void CNUKDlg::SetImageSize(CBitmap *pBitmap, CSize &sz) { BITMAP bm; pBitmap->GetBitmap(&bm); sz = CSize(bm.bmWidth, bm.bmHeight); } ////////////////////////////////////////////////////////////////////// //载入左上角的硬盘位图 void CNUKDlg::SetTopLeftImage(UINT nID) { SetImage(m_BitmapTopLeft, nID); SetImageSize(&m_BitmapTopLeft, m_szBitmapTopLeft); } //载入左上角的资源位图 void CNUKDlg::SetTopLeftImage(CString strName) { SetImage(m_BitmapTopLeft, strName); SetImageSize(&m_BitmapTopLeft, m_szBitmapTopLeft); } //载入上方的硬盘位图 void CNUKDlg::SetTopMidImage(UINT nID) { SetImage(m_BitmapTopMid, nID); SetImageSize(&m_BitmapTopMid, m_szBitmapTopMid); } //载入上方的资源位图 void CNUKDlg::SetTopMidImage(CString strName) { SetImage(m_BitmapTopMid, strName); SetImageSize(&m_BitmapTopMid, m_szBitmapTopMid); } //载入右上角的硬盘位图 void CNUKDlg::SetTopRightImage(UINT nID) { SetImage(m_BitmapTopRight, nID); SetImageSize(&m_BitmapTopRight, m_szBitmapTopRight); } //载入右上角的资源位图 void CNUKDlg::SetTopRightImage(CString strName) { SetImage(m_BitmapTopRight, strName); SetImageSize(&m_BitmapTopRight, m_szBitmapTopRight); } //////////////////////////////////////////////////////////////////////////////////// //载入左方的硬盘位图 void CNUKDlg::SetCenterLeftImage(UINT nID) { SetImage(m_BitmapCenterLeft, nID); SetImageSize(&m_BitmapCenterLeft, m_szBitmapCenterLeft); } //载入左方的资源位图 void CNUKDlg::SetCenterLeftImage(CString strName) { SetImage(m_BitmapCenterLeft, strName); SetImageSize(&m_BitmapCenterLeft, m_szBitmapCenterLeft); } //载入中间的硬盘位图 void CNUKDlg::SetCenterMidImage(UINT nID) { SetImage(m_BitmapCenterMid, nID); SetImageSize(&m_BitmapCenterMid, m_szBitmapCenterMid); } //载入中间的资源位图 void CNUKDlg::SetCenterMidImage(CString strName) { SetImage(m_BitmapCenterMid, strName); SetImageSize(&m_BitmapCenterMid, m_szBitmapCenterMid); } //载入右方的硬盘位图 void CNUKDlg::SetCenterRightImage(UINT nID) { SetImage(m_BitmapCenterRight, nID); SetImageSize(&m_BitmapCenterRight, m_szBitmapCenterRight); } //载入右方的资源位图 void CNUKDlg::SetCenterRightImage(CString strName) { SetImage(m_BitmapCenterRight, strName); SetImageSize(&m_BitmapCenterRight, m_szBitmapCenterRight); } //////////////////////////////////////////////////////////////////////////////// //载入左下角的硬盘位图 void CNUKDlg::SetBottomLeftImage(UINT nID) { SetImage(m_BitmapBottomLeft, nID); SetImageSize(&m_BitmapBottomLeft, m_szBitmapBottomLeft); } //载入左下角的资源位图 void CNUKDlg::SetBottomLeftImage(CString strName) { SetImage(m_BitmapBottomLeft, strName); SetImageSize(&m_BitmapBottomLeft, m_szBitmapBottomLeft); } //载入下方的硬盘位图 void CNUKDlg::SetBottomMidImage(UINT nID) { SetImage(m_BitmapBottomMid, nID); SetImageSize(&m_BitmapBottomMid, m_szBitmapBottomMid); } //载入下方的资源位图 void CNUKDlg::SetBottomMidImage(CString strName) { SetImage(m_BitmapBottomMid, strName); SetImageSize(&m_BitmapBottomMid, m_szBitmapBottomMid); } //载入右下角的硬盘位图 void CNUKDlg::SetBottomRightImage(UINT nID) { SetImage(m_BitmapBottomRight, nID); SetImageSize(&m_BitmapBottomRight, m_szBitmapBottomRight); } //载入右下角的资源位图 void CNUKDlg::SetBottomRightImage(CString strName) { SetImage(m_BitmapBottomRight, strName); SetImageSize(&m_BitmapBottomRight, m_szBitmapBottomRight); } void CNUKDlg::OnSizing(UINT fwSide, LPRECT pRect) { CDialog::OnSizing(fwSide, pRect); // TODO: 在此处添加消息处理程序代码 Invalidate(); } BOOL CNUKDlg::OnEraseBkgnd(CDC* pDC) { // TODO: 在此添加消息处理程序代码和/或调用默认值 return TRUE;//CDialog::OnEraseBkgnd(pDC);// } void CNUKDlg::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 m_bMouseDown = true; SetCapture(); //设置鼠标全屏捕捉 m_ptCurPoint=point; //记下按下时的鼠标坐标 CRect rc; GetWindowRect(rc); m_rcCurRect = rc;// CRect rcW(0,0,rc.Width(),rc.Height()); CRect rcW1(rcW.left+BorderSpace, rcW.top+BorderSpace, rcW.left+PointSpace+BorderSpace, rcW.top+PointSpace+BorderSpace); CRect rcW2(rcW.left+BorderSpace, rcW.top, rcW.right-BorderSpace, rcW.top+BorderSpace); CRect rcW3(rcW.right-PointSpace-BorderSpace, rcW.top+BorderSpace, rcW.right-BorderSpace, rcW.top+PointSpace+BorderSpace); CRect rcW4(rcW.left, rcW.top+BorderSpace, rcW.left+BorderSpace, rcW.bottom-BorderSpace); CRect rcW5(rcW.left+BorderSpace, rcW.top+BorderSpace, rcW.right-BorderSpace, rcW.bottom-BorderSpace); CRect rcW6(rcW.right-BorderSpace, rcW.top+BorderSpace, rcW.right, rcW.bottom-BorderSpace); CRect rcW7(rcW.left+BorderSpace, rcW.bottom-PointSpace-BorderSpace, rcW.left+PointSpace+BorderSpace, rcW.bottom-BorderSpace); CRect rcW8(rcW.left+BorderSpace, rcW.bottom-BorderSpace, rcW.right-BorderSpace, rcW.bottom); CRect rcW9(rcW.right-PointSpace-BorderSpace, rcW.bottom-PointSpace-BorderSpace, rcW.right-BorderSpace, rcW.bottom-BorderSpace); if(rcW2.PtInRect(point)) { SetTimer(2,20,NULL); return; } if(rcW4.PtInRect(point)) { SetTimer(4,20,NULL); return; } if(rcW5.PtInRect(point)) { if(rcW1.PtInRect(point)) { SetTimer(1,20,NULL); return; } else if(rcW3.PtInRect(point)) { SetTimer(3,20,NULL); return; } else if(rcW7.PtInRect(point)) { SetTimer(7,20,NULL); return; } else if(rcW9.PtInRect(point)) { SetTimer(9,20,NULL); return; } else { SetTimer(5,20,NULL); return; } } if(rcW6.PtInRect(point)) { SetTimer(6,20,NULL); return; } if(rcW8.PtInRect(point)) { SetTimer(8,20,NULL); return; } CDialog::OnLButtonDown(nFlags, point); } void CNUKDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 switch(nIDEvent) { case(1): { CRect rcW; POINT point; GetWindowRect(rcW);// //实现拖动时窗体跟着右下角拉伸 ::GetCursorPos(&point); // if(point.y<rcW.bottom-400&&point.x<rcW.right-170) { MoveWindow(point.x-m_ptCurPoint.x,point.y-m_ptCurPoint.y, m_rcCurRect.right-(point.x-m_ptCurPoint.x), m_rcCurRect.bottom-(point.y-m_ptCurPoint.y), true); CRect rc; GetWindowRect(rc); m_rcCurRect = rc; } else if(point.y<rcW.bottom-400&&point.x>rcW.right-170) { MoveWindow(m_rcCurRect.left ,point.y-m_ptCurPoint.y, rcW.Width(), m_rcCurRect.bottom-(point.y-m_ptCurPoint.y), true); CRect rc; GetWindowRect(rc); m_rcCurRect = rc; } else if(point.y>rcW.bottom-400&&point.x<rcW.right-170) { MoveWindow(point.x-m_ptCurPoint.x,m_rcCurRect.top, m_rcCurRect.right-(point.x-m_ptCurPoint.x), rcW.Height(), true); CRect rc; GetWindowRect(rc); m_rcCurRect = rc; } Invalidate(); } break; case(2): { CRect rcW; POINT point; GetWindowRect(rcW);// //实现拖动时窗体跟着右下角拉伸 ::GetCursorPos(&point); // if(point.y<rcW.bottom-400) { MoveWindow(m_rcCurRect.left ,point.y-m_ptCurPoint.y, rcW.Width(), m_rcCurRect.bottom-(point.y-m_ptCurPoint.y), true); CRect rc; GetWindowRect(rc); m_rcCurRect = rc; } Invalidate(); } break; case(3): { CRect rcW; POINT point; GetWindowRect(rcW);// //实现拖动时窗体跟着右边拉伸 ::GetCursorPos(&point); // if(point.y<rcW.bottom-400&&point.x>rcW.left+170) { MoveWindow(m_rcCurRect.left ,point.y-m_ptCurPoint.y, rcW.Width()+point.x-(m_ptCurPoint.x+m_rcCurRect.left), rcW.Height()-(point.y-m_ptCurPoint.y-m_rcCurRect.top), true); m_ptCurPoint.x=point.x-m_rcCurRect.left; CRect rc; GetWindowRect(rc); m_rcCurRect = rc; } else if(point.y<rcW.bottom-400&&point.x<rcW.left+170) { MoveWindow(m_rcCurRect.left ,point.y-m_ptCurPoint.y, 170, m_rcCurRect.bottom-(point.y-m_ptCurPoint.y), true); m_ptCurPoint.x=170; CRect rc; GetWindowRect(rc); m_rcCurRect = rc; } else if(point.y>rcW.bottom-400&&point.x>rcW.left+170) { MoveWindow(m_rcCurRect.left ,m_rcCurRect.top, rcW.Width()+point.x-(m_ptCurPoint.x+m_rcCurRect.left), m_rcCurRect.Height(), true); m_ptCurPoint.x=point.x-m_rcCurRect.left; CRect rc; GetWindowRect(rc); m_rcCurRect = rc; } Invalidate(); } break; case(4): { CRect rcW; POINT point; GetWindowRect(rcW);// //实现拖动时窗体跟着右下角拉伸 ::GetCursorPos(&point); // if(point.x<rcW.right-170) { MoveWindow(point.x-m_ptCurPoint.x,m_rcCurRect.top, m_rcCurRect.right-(point.x-m_ptCurPoint.x), rcW.Height(), true); CRect rc; GetWindowRect(rc); m_rcCurRect = rc; } Invalidate(); } break; case(5): { CRect rcW; POINT point; GetWindowRect(rcW); //实现拖动时窗体跟着移动 ::GetCursorPos(&point); MoveWindow(point.x-m_ptCurPoint.x ,point.y-m_ptCurPoint.y ,rcW.Width(),rcW.Height() ,true); } break; case(6): { CRect rcW; POINT point; GetWindowRect(rcW);// //实现拖动时窗体跟着右边拉伸 ::GetCursorPos(&point); // if(point.x>rcW.left+170) { MoveWindow(m_rcCurRect.left ,m_rcCurRect.top, rcW.Width()+point.x-(m_ptCurPoint.x+m_rcCurRect.left), rcW.Height(), true); m_ptCurPoint.x=point.x-m_rcCurRect.left; CRect rc; GetWindowRect(rc); m_rcCurRect = rc; } Invalidate(); } break; case(7): { CRect rcW; POINT point; GetWindowRect(rcW);// //实现拖动时窗体跟着右边拉伸 ::GetCursorPos(&point); // if(point.y>rcW.top+400&&point.x<rcW.right-170) { MoveWindow(point.x-m_ptCurPoint.x,m_rcCurRect.top, m_rcCurRect.right-(point.x-m_ptCurPoint.x), rcW.Height()+(point.y-m_ptCurPoint.y-m_rcCurRect.top), true); m_ptCurPoint.y=point.y-m_rcCurRect.top; CRect rc; GetWindowRect(rc); m_rcCurRect = rc; } else if(point.y<rcW.top+400&&point.x<rcW.right-170) { MoveWindow(point.x-m_ptCurPoint.x,m_rcCurRect.top, m_rcCurRect.right-(point.x-m_ptCurPoint.x), rcW.Height(), true); CRect rc; GetWindowRect(rc); m_rcCurRect = rc; } else if(point.y>rcW.top+400&&point.x>rcW.right-170) { MoveWindow(m_rcCurRect.left ,m_rcCurRect.top, rcW.Width(), rcW.Height()+point.y-(m_ptCurPoint.y+m_rcCurRect.top), true); m_ptCurPoint.x=0; m_ptCurPoint.y=point.y-m_rcCurRect.top; CRect rc; GetWindowRect(rc); m_rcCurRect = rc; } Invalidate(); } break; case(8): { CRect rcW; POINT point; GetWindowRect(rcW);// //实现拖动时窗体跟着右边拉伸 ::GetCursorPos(&point); // if(point.y>rcW.top+400) { MoveWindow(m_rcCurRect.left ,m_rcCurRect.top, rcW.Width(), rcW.Height()+point.y-(m_ptCurPoint.y+m_rcCurRect.top), true); m_ptCurPoint.y=point.y-m_rcCurRect.top; CRect rc; GetWindowRect(rc); m_rcCurRect = rc; } Invalidate(); } break; case(9): { CRect rcW; POINT point; GetWindowRect(rcW);// //实现拖动时窗体跟着右下角拉伸 ::GetCursorPos(&point); // if(point.y>rcW.top+400&&point.x>rcW.left+170) { MoveWindow(m_rcCurRect.left ,m_rcCurRect.top, rcW.Width()+point.x-(m_ptCurPoint.x+m_rcCurRect.left), rcW.Height()+point.y-(m_ptCurPoint.y+m_rcCurRect.top), true); m_ptCurPoint.x=point.x-m_rcCurRect.left; m_ptCurPoint.y=point.y-m_rcCurRect.top; CRect rc; GetWindowRect(rc); m_rcCurRect = rc; } else if(point.y>rcW.top+400&&point.x<rcW.left+170) { MoveWindow(m_rcCurRect.left ,m_rcCurRect.top, 170, rcW.Height()+point.y-(m_ptCurPoint.y+m_rcCurRect.top), true); m_ptCurPoint.x=170; m_ptCurPoint.y=point.y-m_rcCurRect.top; CRect rc; GetWindowRect(rc); m_rcCurRect = rc; } else if(point.y<rcW.top+400&&point.x>rcW.left+170) { MoveWindow(m_rcCurRect.left ,m_rcCurRect.top, rcW.Width()+point.x-(m_ptCurPoint.x+m_rcCurRect.left), 400, true); m_ptCurPoint.x=point.x-m_rcCurRect.left; m_ptCurPoint.y=400; CRect rc; GetWindowRect(rc); m_rcCurRect = rc; } Invalidate(); } break; default: break; } CDialog::OnTimer(nIDEvent); } void CNUKDlg::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 m_bMouseDown=false; ReleaseCapture(); KillTimer(1); //关闭拖动时记数器 KillTimer(2); //关闭拖动时记数器 KillTimer(3); //关闭拖动时记数器 KillTimer(4); //关闭拖动时记数器 KillTimer(5); //关闭拖动时记数器 KillTimer(6); //关闭右边拉伸时记数器 KillTimer(7); //关闭拖动时记数器 KillTimer(8); //关闭拖动时记数器 KillTimer(9); //关闭右下角拉伸时记数器 CDialog::OnLButtonUp(nFlags, point); } void CNUKDlg::ChangeWindowRgn(CDC *pDC) { COLORREF col = RGB(255,0,255); CRect rcClient; GetClientRect (rcClient); CRgn rgn; rgn.CreateRectRgn (0, 0, rcClient.Width(), rcClient.Height()); int i=6; for (int y=0; y<i; y++) { for (int x=0; x<i; x++) { // If this pixel is transparent if (pDC->GetPixel(x,y)==col) { CRgn rgnAdd; rgnAdd.CreateRectRgn (x, y, x+1, y+1); rgn.CombineRgn(&rgn, &rgnAdd, RGN_DIFF); } } for (int x=rcClient.Width()-i; x<rcClient.Width(); x++) { // If this pixel is transparent if (pDC->GetPixel(x,y)==col) { CRgn rgnAdd; rgnAdd.CreateRectRgn (x, y, x+1, y+1); rgn.CombineRgn(&rgn, &rgnAdd, RGN_DIFF); } } } for (int y=rcClient.Height()-i; y<rcClient.Height(); y++) { for (int x=0; x<i; x++) { // If this pixel is transparent if (pDC->GetPixel(x,y)==col) { CRgn rgnAdd; rgnAdd.CreateRectRgn (x, y, x+1, y+1); rgn.CombineRgn(&rgn, &rgnAdd, RGN_DIFF); } } for (int x=rcClient.Width()-i; x<rcClient.Width(); x++) { // If this pixel is transparent if (pDC->GetPixel(x,y)==col) { CRgn rgnAdd; rgnAdd.CreateRectRgn (x, y, x+1, y+1); rgn.CombineRgn(&rgn, &rgnAdd, RGN_DIFF); } } } SetWindowRgn (rgn, TRUE); } BOOL CNUKDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { // TODO: 在此添加消息处理程序代码和/或调用默认值 switch(m_icur) { case 1: case 9: ::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_SIZENWSE)); return TRUE; case 2: case 8: ::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_SIZENS)); return TRUE; case 3: case 7: ::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_SIZENESW)); return TRUE; case 4: case 6: ::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_SIZEWE)); return TRUE; default: ::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW)); return TRUE; } return CDialog::OnSetCursor(pWnd, nHitTest, message); } void CNUKDlg::OnMouseMove(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CRect rc; GetWindowRect(rc); m_rcCurRect = rc;// CRect rcW(0,0,rc.Width(),rc.Height()); CRect rcW1(rcW.left+BorderSpace, rcW.top+BorderSpace, rcW.left+PointSpace+BorderSpace, rcW.top+PointSpace+BorderSpace); CRect rcW2(rcW.left+BorderSpace, rcW.top, rcW.right-BorderSpace, rcW.top+BorderSpace); CRect rcW3(rcW.right-PointSpace-BorderSpace, rcW.top+BorderSpace, rcW.right-BorderSpace, rcW.top+PointSpace+BorderSpace); CRect rcW4(rcW.left, rcW.top+BorderSpace, rcW.left+BorderSpace, rcW.bottom-BorderSpace); CRect rcW5(rcW.left+BorderSpace, rcW.top+BorderSpace, rcW.right-BorderSpace, rcW.bottom-BorderSpace); CRect rcW6(rcW.right-BorderSpace, rcW.top+BorderSpace, rcW.right, rcW.bottom-BorderSpace); CRect rcW7(rcW.left+BorderSpace, rcW.bottom-PointSpace-BorderSpace, rcW.left+PointSpace+BorderSpace, rcW.bottom-BorderSpace); CRect rcW8(rcW.left+BorderSpace, rcW.bottom-BorderSpace, rcW.right-BorderSpace, rcW.bottom); CRect rcW9(rcW.right-PointSpace-BorderSpace, rcW.bottom-PointSpace-BorderSpace, rcW.right-BorderSpace, rcW.bottom-BorderSpace); if(rcW2.PtInRect(point)) { m_icur = 2; } if(rcW4.PtInRect(point)) { m_icur = 4; } if(rcW5.PtInRect(point)) { if(rcW1.PtInRect(point)) { m_icur = 1; } else if(rcW3.PtInRect(point)) { m_icur = 3; } else if(rcW7.PtInRect(point)) { m_icur = 7; } else if(rcW9.PtInRect(point)) { m_icur = 9; } else { m_icur = 5; } } if(rcW6.PtInRect(point)) { m_icur = 6; } if(rcW8.PtInRect(point)) { m_icur = 8; } CDialog::OnMouseMove(nFlags, point); } void CNUKDlg::OnBnClickedCloseBtn() { // TODO: 在此添加控件通知处理程序代码 PostQuitMessage(0); } void CNUKDlg::OnBnClickedMenuBtn() { // TODO: 在此添加控件通知处理程序代码 MessageBox(_T("作者:黄锐坤\n毕业学校:韩山师范学院\nQQ:89642685\nE-mail:meet-xp@126.com")); } void CNUKDlg::OnBnClickedUserHeardBtn() { // TODO: 在此添加控件通知处理程序代码 } void CNUKDlg::OnBnClickedSearchBtn() { // TODO: 在此添加控件通知处理程序代码 if(IDYES==MessageBox(_T("欢迎您加我为QQ好友\n现在就给我QQ留言吧"),NULL,MB_YESNO)) { ShellExecute(m_hWnd, NULL, _T("http://wpa.qq.com/msgrd?V=1&Uin=89642685&Site=NUK程序使用者&Menu=yes"), NULL, NULL, SW_HIDE); } } void CNUKDlg::OnBnClickedHostingBtn() { // TODO: 在此添加控件通知处理程序代码 if(IDYES==MessageBox(_T("欢迎您访问VC知识库\n现在就行动吗"),NULL,MB_YESNO)) { ShellExecute(m_hWnd, NULL, _T("http://www.vckbase.com"), NULL, NULL, SW_HIDE); } } void CNUKDlg::OnBnClickedStatusBtn() { // TODO: 在此添加控件通知处理程序代码 //CPoint point; //GetCursorPos(&point); COfficeXPMenu m_popmenu; m_popmenu.LoadMenu(IDR_MENU_STATUS); m_popmenu.SetType(TYPE_XP); CMenu *psub = (CMenu *)m_popmenu.GetSubMenu(0); CRect rect; m_statusBtn.GetWindowRect(rect); DWORD dwID =psub->TrackPopupMenu((TPM_LEFTALIGN|TPM_RIGHTBUTTON), rect.left,rect.top+27, this); } void CNUKDlg::OnDestroy() { CDialog::OnDestroy(); // TODO: 在此处添加消息处理程序代码 } void CNUKDlg::ReDrawCrl(CDC* m_MemDC) { CRect rcClient; GetClientRect(&rcClient); static bool firstGetClientRect = true; static int preClientHeight = rcClient.Height(); static int preClientWidth = rcClient.Width(); if(firstGetClientRect) { firstGetClientRect = false; } if(firstGetClientRect||preClientHeight!=rcClient.Height()||preClientWidth!=rcClient.Width()||m_bMouseDown) { preClientHeight = rcClient.Height(); preClientWidth = rcClient.Width(); CImage *image=NULL; CRect rect; CRect rcIcon; CPoint ptText; CString strText; CFont font; font.CreatePointFont(90,_T("Arial")); m_MemDC->SelectObject(&font); image=m_closeBtn.GetPaintImage(); rect = m_closeBtn.GetRectInParent(); if(!image->IsNull()) image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, image->GetWidth(),image->GetHeight(), RGB(255,0,255)); image=m_userHeadBtn.GetPaintImage(); rect = m_userHeadBtn.GetRectInParent(); if(!image->IsNull()) image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, image->GetWidth(),image->GetHeight(), RGB(255,0,255)); image=m_statusBtn.GetPaintImage(); rect = m_statusBtn.GetRectInParent(); if(!image->IsNull()) image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, image->GetWidth(),image->GetHeight(), RGB(255,0,255)); image=m_mailBtn.GetPaintIcon(); rect = m_mailBtn.GetRectInParent(); rcIcon = m_mailBtn.GetIconRect(); if(!image->IsNull()) { image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, image->GetWidth(),image->GetHeight(), RGB(0,0,0)); ptText = m_mailBtn.GetTextPos(); m_mailBtn.GetWindowTextW(strText); m_MemDC->TextOutW(rect.left+ptText.x,rect.top+ptText.y,strText); } image=m_hostingBtn.GetPaintIcon(); rect = m_hostingBtn.GetRectInParent(); rcIcon = m_hostingBtn.GetIconRect(); if(!image->IsNull()) { image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, image->GetWidth(),image->GetHeight(), RGB(0,0,0)); ptText = m_hostingBtn.GetTextPos(); m_hostingBtn.GetWindowTextW(strText); m_MemDC->TextOutW(rect.left+ptText.x,rect.top+ptText.y,strText); } image=m_paymentBtn.GetPaintIcon(); rect = m_paymentBtn.GetRectInParent(); rcIcon = m_paymentBtn.GetIconRect(); if(!image->IsNull()) image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, image->GetWidth(),image->GetHeight(), RGB(0,0,0)); image=m_mobileBtn.GetPaintIcon(); rect = m_mobileBtn.GetRectInParent(); rcIcon = m_mobileBtn.GetIconRect(); if(!image->IsNull()) image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, image->GetWidth(),image->GetHeight(), RGB(0,0,0)); image=m_gameBtn.GetPaintIcon(); rect = m_gameBtn.GetRectInParent(); rcIcon = m_gameBtn.GetIconRect(); if(!image->IsNull()) image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, image->GetWidth(),image->GetHeight(), RGB(0,0,0)); image=m_ttBtn.GetPaintIcon(); rect = m_ttBtn.GetRectInParent(); rcIcon = m_ttBtn.GetIconRect(); if(!image->IsNull()) image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, image->GetWidth(),image->GetHeight(), RGB(0,0,0)); image=m_chatBtn.GetPaintIcon(); rect = m_chatBtn.GetRectInParent(); rcIcon = m_chatBtn.GetIconRect(); if(!image->IsNull()) image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, image->GetWidth(),image->GetHeight(), RGB(0,0,0)); image=m_petBtn.GetPaintIcon(); rect = m_petBtn.GetRectInParent(); rcIcon = m_petBtn.GetIconRect(); if(!image->IsNull()) image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, image->GetWidth(),image->GetHeight(), RGB(0,0,0)); image=m_musicBtn.GetPaintIcon(); rect = m_musicBtn.GetRectInParent(); rcIcon = m_musicBtn.GetIconRect(); if(!image->IsNull()) image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, image->GetWidth(),image->GetHeight(), RGB(0,0,0)); if(m_tvBtn.IsWindowVisible()) { image=m_tvBtn.GetPaintIcon(); rect = m_tvBtn.GetRectInParent(); rcIcon = m_tvBtn.GetIconRect(); if(!image->IsNull()) image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, image->GetWidth(),image->GetHeight(), RGB(0,0,0)); } image=m_menuBtn.GetPaintImage(); rect = m_menuBtn.GetRectInParent(); rcIcon = m_menuBtn.GetIconRect(); if(!image->IsNull()) image->TransparentBlt(m_MemDC->m_hDC,rect.left,rect.top, image->GetWidth(),image->GetHeight(), RGB(255,0,255)); image=m_msgManagerBtn.GetPaintIcon(); rect = m_msgManagerBtn.GetRectInParent(); rcIcon = m_msgManagerBtn.GetIconRect(); if(!image->IsNull()) image->TransparentBlt(m_MemDC->m_hDC,rect.left,rect.top, image->GetWidth(),image->GetHeight(), RGB(0,0,0)); image=m_searchBtn.GetPaintIcon(); rect = m_searchBtn.GetRectInParent(); rcIcon = m_searchBtn.GetIconRect(); if(!image->IsNull()) { image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, image->GetWidth(),image->GetHeight(), RGB(0,0,0)); ptText = m_searchBtn.GetTextPos(); m_searchBtn.GetWindowTextW(strText); m_MemDC->SetTextColor(m_searchBtn.GetFGColor()); m_MemDC->TextOutW(rect.left+ptText.x,rect.top+ptText.y,strText); } m_MemDC->BitBlt(3,68,27,33*4+4,m_skintab.GetWindowDC(),0,0,SRCCOPY); } }